package com.itheima.health.dao;

import com.github.pagehelper.Page;
import com.itheima.health.pojo.Menu;
import com.itheima.health.pojo.Permission;
import com.itheima.health.pojo.Role;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @author ：seanyang
 * @date ：Created in 2019/7/1
 * @description ：角色Dao
 * @version: 1.0
 */
public interface RoleDao {
	Set<Role> findByUserId(@Param("id") Integer id);

	List<Role> findAll();


	/*
    保存角色信息
     */
	void add( Role role);

	/*
   添加角色的权限
     */
	void addRoleAndPermission(Map map);
	/*
    添加角色的菜单
     */
	void addRoleAndMenu(Map map);
	/*
    查询权限列表 和  菜单列表
     */
	List<Permission> findAllPermission();

	List<Menu> findAllMenu();

	/*
    角色条件 分页查询
     */
	Page<Role> selectByCondition(@Param("queryString") String queryString);

	/*
    角色 根据id回显
     */
	Role findRoleById(@Param("id") Integer id);

	/*
    根据角色id 回显 权限列表 菜单列表
     */
	List<Integer>findPermissionIdsByRoleId(@Param("id") Integer id);

	List<Integer>findMenuIdsByRoleId(@Param("id") Integer id);

/*
编辑
 */
	void edit(Role role);
	void deletePermissionByRoleId(@Param("id") Integer id);
	void deleteMenuByRoleId(@Param("id") Integer id);

    /**
     * 基于菜单，查询是否有关联数据
     * @param
     * @return
     */
    void deleteById(Integer id);






    /**
     * 根据角色id删除角色菜单对应关系
     * @param roleId
     */
    void deleteRelWithMenu(Integer roleId);
    /**
     * 根据角色id删除角色权限对应关系
     * @param roleId
     */
    void deleteRelWithPermission(Integer roleId);
}
